;; 测试emacs版本
(let ((minver "25.1"))
  (when (version< emacs-version minver)
    (error "Your Emacs is too old -- this config requires v%s or higher" minver)))
(when (version< emacs-version "26.1")
  (message "Your Emacs is old, and some functionality in this config will be disabled. Please upgrade if possible."))

;; 添加配置文件读取路径
(add-to-list 'load-path (expand-file-name "lisp" user-emacs-directory))
;; 添加配置文件读取路径
(add-to-list 'load-path (expand-file-name "lisp/other" user-emacs-directory))


;; 设置用户名和邮箱
(setq user-full-name "GuogangLu")
(setq user-mail-address "lugang0512@gmail.com")
;; 关闭emacs启动时的画面
(setq inhibit-startup-message t)
(setq guns-inhibit-startup-message t)
(setq custom-file (locate-user-emacs-file "custom.el"))
;; 关闭拼写检查
(defconst *spell-check-support-enabled* nil) ;; Enable with t if you prefer
;; 检测是否为mac系统
(defconst *is-a-mac* (eq system-type 'darwin))
;; 使用服务器模式运行
;(server-mode t)


;; Adjust garbage collection thresholds during startup, and thereafter
(let ((normal-gc-cons-threshold (* 20 1024 1024))
      (init-gc-cons-threshold (* 128 1024 1024)))
  (setq gc-cons-threshold init-gc-cons-threshold)
  (add-hook 'emacs-startup-hook
            (lambda () (setq gc-cons-threshold normal-gc-cons-threshold))))

(require 'init-site-lisp) ;; Must come before elpa, as it may provide package.el
;; 设置插件包相关配置
(require 'init-elpa)      ;; Machinery for installing required packages
;; 设置路径
(require 'init-exec-path) ;; Set up $PATH
;; 自定义的一些函数
(require 'init-utils)

;; 添加windows系统特有的配置
(if (equal system-type 'windows-nt)
	(require 'init-windows))

;; 添加颜色主题
(require 'init-themes)

;; 添加顶端文件显示栏
(require 'init-tabbar)

;; 添加日历初始化
(require 'init-cal)
;; 较好buffer切换
(require 'init-ibuffer)

;; 添加编辑使用到的一些基本配置
(require 'init-base-edit)

;; 自动补全插件
(require 'init-company)

;; 关于orgmode的一些初始化
(require 'init-org)

;; 关于magit的一些初始化
(require 'init-git)

;; 关于CC-MODE的一些补充
(require 'init-mycc-mode)

;; 关于gdb调试的初始化配置
(require 'init-gdb)

;; 以下添加一些编程模式的支持
(require 'init-web) ;; 添加web开发模式支持(包括javascript,html)
(require 'init-qml) ;; 添加qml文件模式
(require 'init-lua) ;; 添加lua文件模式
(require 'init-slime) ;;添加lisp语言开发模式
(require 'init-markdown) ;;添加.md文件编辑模式

;; 添加graphviz-dot-mode支持
(require 'init-graphviz-dot)

;; 初始化多媒体相关配置
(require 'init-media)

;; 关于翻译的插件初始化
(require 'init-chinese)

;; 一些个人功能初始化配置
(require 'init-lugg)

;; 添加evil插件，用于实现在emacs中实现vi的功能
(require 'init-evil)

;; 添加Kconfig模式支持
(require 'init-kconfig)

;; 读取custom配置，如果没有则创建一个用于保存custom数据的文件
(setq custom-file
	  (expand-file-name ".my-custom.el" user-emacs-directory))
(if (file-exists-p custom-file)
	(load custom-file)
  (find-file-noselect custom-file))

(provide 'init)
